home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amoszine 6
/
Amoszine 6 (Disk 2 of 2).adf
/
paul_nordovics.lha
/
P_Nordovics
/
bouncy_things.AMOS
/
bouncy_things.amosSourceCode
< prev
next >
Wrap
AMOS Source Code
|
1992-02-26
|
3KB
|
151 lines
' *************************************************************
'
' BOUNCY CIRCLES EXAMPLE
' ======================
'
' /\/\/\/\/\/\/\/\/\
' By: Paul Nordovics
' \/\/\/\/\/\/\/\/\/
'
' *************************************************************
'
Hide
'
' **********************************
' reduce screen colours for SPEED!!!
' **********************************
Screen Open 0,320,200,2,Lowres
Curs Off : Flash Off
Cls 0
Colour 1,$FFF
'
' ********************************
' double buffer to stop flickering
' ********************************
Double Buffer
'
' **************************
' kill automatic bob updates
' **************************
Bob Update Off
'
' *****************************
' output to LOGICAL screen only
' *****************************
Autoback 0
'
' **************
' set up circles
' **************
'
' ****************************
' AMOUNT = number of circles+1
' ****************************
AMOUNT=5 : Rem CHANGE ME !!!
'
Dim X(AMOUNT)
Dim Y#(AMOUNT)
Dim SPEED#(AMOUNT)
Dim STATE(AMOUNT)
Dim DELAY(AMOUNT)
'
' **************
' set up circles
' **************
For K=0 To AMOUNT
X(K)=Rnd(303)
Y#(K)=180
SPEED#(K)=Rnd(10)+2
STATE(K)=0
DELAY(K)=(Rnd(10)*5)+1
Set Bob K,-1,,
Next K
'
ACCEL#=0.6 : Rem CHANGE ME !!!
'
' ***************************
' set up a speed LUT, faster
' than using RND in main loop
' ***************************
Dim SPEED_LUT#(10)
For K=0 To 9
SPEED_LUT#(K)=Rnd(10)+2
Next K
'
' *****************
' end of LUT marker
' *****************
SPEED_LUT#(10)=-1.0
'
' -------------------------------------------------------------
'
' *************************************************************
' MAIN LOOP
' *************************************************************
Do
Wait Vbl
Cls 0
Gosub _DO_CIRCLES
Bob Draw
Screen Swap
Loop
'
' -------------------------------------------------------------
'
' *************************************************************
' DO CIRCLES
' *************************************************************
_DO_CIRCLES:
For K=0 To AMOUNT
' ****
' wait
' ****
If STATE(K)=0
Add DELAY(K),-1
If DELAY(K)=0
STATE(K)=1
End If
End If
' ******
' launch
' ******
If STATE(K)=1
If SPEED#(K)>0
SPEED#(K)=SPEED#(K)-ACCEL#
If SPEED#(K)<=0.0
SPEED#(K)=0.0
STATE(K)=2
End If
End If
Y#(K)=Y#(K)-SPEED#(K)
End If
' ****
' fall
' ****
If STATE(K)=2
SPEED#(K)=SPEED#(K)+ACCEL#
Y#(K)=Y#(K)+SPEED#(K)
If Y#(K)>180.0
Y#(K)=180.0
STATE(K)=3
End If
End If
' ********************
' get new launch speed
' ********************
If STATE(K)=3
Repeat
SPEED#(K)=SPEED_LUT#(SPEED_LUT_POINTER)
If SPEED#(K)=-1.0
SPEED_LUT_POINTER=0
End If
Until SPEED#(K)<>-1.0
Add SPEED_LUT_POINTER,1
STATE(K)=1
End If
Bob K,X(K),Y#(K),1
Next K
Return
'
' -------------------------------------------------------------
'